////////////////////////////////////////////////////////////////////////////////
//
//  FLEX USER GROUP HOKURIKU
//  Copyright 2009 Flex User Group Hokuriku
//  All Rights Reserved.
// 
//  NOTICE: Flex User Group Hokuriku permits you to use, 
//  modify, and distribute this file 
//  in accordance with the terms of the license agreement accompanying it.
//
////////////////////////////////////////////////////////////////////////////////
package net.fxug.hokuriku.chocolat.model
{
    import com.adobe.utils.DateUtil;
    import com.swfjunkie.tweetr.data.objects.SearchResultData;

    import net.fxug.hokuriku.chocolat.service.TwitterSearchVoteWatcher;

    /**
     * Viewで参照される投票情報クラス
     * @hikaruworld
     */
    [Bindable]
    public class VoteData
    {
        /**
         * つぶやきID
         * 例) TwitterSearchVoteWatcher:sinceId
         *      SocketServer:IPアドレス
         * TODO 各IDと表示名の対応Mapのユーティリティの実装後に内部的には一意に管理する。
         */
        public var id:String;
        /** コメント内容 */
        public var text:String;
        /** 送出元 */
        public var route:String;
        /** 生成時間 */
        public var datetime:Date;
        /**
         * 自身の投票データが有効かどうか
         * この値がfalseになっている場合は、タイムラインに影響を及ぼすことの出来ない(ただし通知は行われる)インスタンスである事を示す。
         */
        public var voteEnabled:Boolean;
        /** 該当情報へのリンク(Twitterのみ) */
        public var link:String;

        /** デフォルトコンストラクタ */
        public function VoteData()
        {
            this.voteEnabled = true;
        }

        /**
         * SearchResultDataから変換用のコンバータ
         * この変換処理を利用した場合、routeには<strong>必ずTwitterが設定される</strong>
         * @param data 変換対象データ
         * @return dataから変換された、VoteDataオブジェクト
         */
        public static function convertFromSearchResultData(data:SearchResultData):VoteData
        {
            var ret:VoteData = new VoteData;
//            ret.id = String(data.id);
            ret.id = data.user;
            ret.text = data.text;
            ret.link = data.link;
            ret.datetime = DateUtil.parseW3CDTF(data.createdAt);
            ret.route = TwitterSearchVoteWatcher.WATCHER_TYPE;

            return ret;
        }

		/**
		 * @inheritDoc Object#toString()
		 */
        public function toString():String
        {
            return "id::" + this.id + " ,text::" + this.text + " ,route::" + this.route + " ,voteEnabled::" + this.voteEnabled + " ,link::" + this.link;
        }
    }
}